<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<!--
   1.我们可以通过直接赋值location.hash来改变url，但页面不发生刷新
           1.例如：http://www.test.com/#/something
           其中http://www.test.com为真实路径，而#something则为网页中的位置，称之为锚点
           在访问锚点时，会自动跳到锚点所在的网页位置
           
           2.location.hash 可读可写
           http://www.test.com/#/something
           location.hash;   // #/something
           location.hash='test1'      // http://www.test.com/#/test1
   
   
   2.通过HTML5的history.pushState来改变url，页面也不会发生刷新
        1.history对象，用来保存浏览历时。如果当前窗口先后访问了三个网址，那么history.length=3
        2.history对象提供了一系列方法，允许在浏览历史之间移动
        3.history.pushState(data,title,url) //每执行一次都会增加一条历史记录
           data：要设置的history.state的值，可以是任意类型的值，可根据此值进行判断执行想要的操作。
           title：现在大多数浏览器不支持或者忽略这个参数，最好用null代替。
           url：地址栏的值，若不需要可用空来代替。
           例如：url www.youku.com
           history.pushState({},'','home')   // www.youku.com/home
           history.pushState({},'','about')   // www.youku.com/about
           history.pushState({},'','me')   // www.youku.com/me
           把三个压入栈里面，url显示的永远是最外面的栈顶的东西。 栈：先进后出
        4.history.back()  // history.back()会将栈顶的东西移除，相当于返回上一页
           push和back相当于一个入栈和出栈的操作
        5.history.forward() ： 移动到下一个访问页面，等同于浏览器的前进键
        
    3.使用history.replaceState()来改变url，页面也不会刷新
         history.replaceState({},'','home') // 修改浏览历史中当前记录，不能点返回
        
    4.history.go
         history.go(-1) 等同于 history.back()
         history.go(-2)  栈中出栈两个，显示新的栈顶的内容，相当于返回上上页
         history.go(1)   栈中入栈一个，等同于history.forward()
-->
</body>
</html>